Hazelcast Transactions হল একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা ডিস্ট্রিবিউটেড সিস্টেমে ACID (Atomicity, Consistency, Isolation, Durability) গুণাবলী নিশ্চিত করতে ব্যবহৃত হয়। Hazelcast এর ট্রানজেকশন ব্যবস্থাপনা মূলত ক্লাস্টারের মধ্যে ডেটা পরিবর্তনগুলি নিশ্চিত করতে সাহায্য করে, যাতে সিস্টেমের মধ্যে কোনো অস্থিরতা বা ডেটা হারানো না হয়।
এই টিউটোরিয়ালে, আমরা Hazelcast Transactions এর বিভিন্ন বৈশিষ্ট্য, ব্যবহার, কনফিগারেশন এবং উদাহরণ আলোচনা করব।
Hazelcast-এ ট্রানজেকশন হলো একটি ডিস্ট্রিবিউটেড কার্যকলাপ যা এক বা একাধিক ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচার (যেমন IMap
, IList
, IQueue
) কে অন্তর্ভুক্ত করে এবং তা নিশ্চিত করে যে সমস্ত অপারেশন একযোগে সফল হবে (Atomicity)। যদি কোনো কারণে একটি অপারেশন ব্যর্থ হয়, তবে আগের সকল পরিবর্তন বাতিল হয়ে যাবে (Rollback), এবং সিস্টেম আগের অবস্থায় ফিরে আসবে (Consistency)।
Hazelcast-এ ট্রানজেকশন ব্যবহার করতে, প্রথমে TransactionalMap অথবা TransactionalObject কনফিগার করতে হয়। এটি ট্রানজেকশন শুরু, সম্পূর্ণ এবং বাতিল করার জন্য ব্যবহৃত হয়।
Hazelcast-এ ট্রানজেকশন চালাতে আপনাকে TransactionContext
ব্যবহার করতে হবে, এবং TransactionalMap এ ডেটা পরিচালনা করতে হবে।
HazelcastInstance hz = Hazelcast.newHazelcastInstance();
// Start a transaction
TransactionContext context = hz.getTransaction();
context.begin();
// Access TransactionalMap
TransactionalMap<Integer, String> map = context.getMap("myMap");
// Perform some operations in the transaction
map.put(1, "Hello");
map.put(2, "Hazelcast");
// Commit the transaction
context.commit();
এখানে, আমরা একটি TransactionalMap
তৈরি করে ট্রানজেকশনের মধ্যে কিছু ডেটা পরিবর্তন করেছি। ট্রানজেকশনটি সফল হলে, context.commit()
ব্যবহার করে সেই পরিবর্তনগুলো সিস্টেমে সঞ্চিত হয়।
যদি কোনো কারণে ট্রানজেকশনের মধ্যে কিছু ভুল হয়ে যায় এবং আপনি চান যে পরিবর্তনগুলো বাতিল হয়ে যাক, তবে rollback()
পদ্ধতি ব্যবহার করতে হবে:
TransactionContext context = hz.getTransaction();
context.begin();
TransactionalMap<Integer, String> map = context.getMap("myMap");
map.put(1, "Temporary Data");
// Rollback if something goes wrong
context.rollback();
এখানে, rollback()
ব্যবহৃত হয়েছে যাতে ট্রানজেকশনের কোনো পরিবর্তন কার্যকর না হয়।
Hazelcast-এ দুটি প্রধান ধরনের ট্রানজেকশন ব্যবহৃত হয়:
Hazelcast ডিস্ট্রিবিউটেড ট্রানজেকশনের জন্য 2-Phase Commit Protocol (2PC) ব্যবহার করে। এই প্রোটোকলটি ট্রানজেকশনের সমস্ত নোডে ডেটার সিঙ্ক্রোনাইজেশন এবং স্থিতিশীলতা নিশ্চিত করে।
TransactionContext context = hz.getTransaction();
context.begin();
TransactionalMap<Integer, String> map = context.getMap("myMap");
map.put(1, "Transaction Data");
try {
context.commit(); // Phase 2 - Commit the transaction
} catch (Exception e) {
context.rollback(); // Phase 2 - Rollback if any error occurs
}
এখানে, 2PC নিশ্চিত করে যে একাধিক নোডে ডেটা আপডেট বা রোলব্যাক হবে।
Hazelcast-এ, ট্রানজেকশন ব্যবহারের জন্য কয়েকটি সাধারণ ডেটা স্ট্রাকচার এবং অপারেশন রয়েছে:
TransactionContext context = hz.getTransaction();
context.begin();
TransactionalQueue<String> queue = context.getQueue("myQueue");
queue.offer("Task 1");
queue.offer("Task 2");
context.commit(); // Commit the transaction
এখানে, TransactionalQueue ব্যবহার করে ডিস্ট্রিবিউটেড কিউতে ডেটা যোগ করা হয়েছে, এবং তার পরে ট্রানজেকশনটি commit করা হয়েছে।
Hazelcast Transactions ডিস্ট্রিবিউটেড সিস্টেমে ডেটার Atomicity, Consistency, Isolation, এবং Durability (ACID) গুণাবলী নিশ্চিত করতে সাহায্য করে। TransactionalMap, TransactionalQueue ইত্যাদি ডেটা স্ট্রাকচার ব্যবহার করে আপনি ক্লাস্টারের মধ্যে ডেটার উপর সফলভাবে ট্রানজেকশন পরিচালনা করতে পারবেন। Hazelcast এর 2-Phase Commit প্রোটোকল এবং Rollback/ Commit পদ্ধতিগুলি ডিস্ট্রিবিউটেড ট্রানজেকশনে ডেটার সঠিকতা এবং স্থিতিশীলতা বজায় রাখতে অত্যন্ত গুরুত্বপূর্ণ।
Transaction Management API হল Hazelcast-এ ডিস্ট্রিবিউটেড ডেটা অপারেশনগুলিকে অ্যাটমিক, কনসিসটেন্ট, আইসোলেটেড, এবং ডিউরেবল (ACID) করতে ব্যবহৃত একটি ফিচার। এটি ব্যবহারকারীদের একাধিক ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারে একযোগে অপারেশন করার অনুমতি দেয়, যেখানে সমস্ত অপারেশন একসাথে সফল হলে commit করা হয় এবং যদি কোনো সমস্যা ঘটে, তবে সমস্ত অপারেশন rollback করা হয়। এটি ডেটার অখণ্ডতা এবং সিস্টেমের সঠিকতা নিশ্চিত করে।
Hazelcast Transaction Management API আপনাকে distributed transactions পরিচালনা করার জন্য একটি শক্তিশালী পদ্ধতি প্রদান করে। আপনি একাধিক ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারে (যেমন IMap
, IQueue
, IList
, ISet
) ট্রানজেকশন পরিচালনা করতে পারেন।
Hazelcast এর Transaction Management API ACID (Atomicity, Consistency, Isolation, Durability) প্রিন্সিপলের উপর ভিত্তি করে কাজ করে, যাতে ডিস্ট্রিবিউটেড সিস্টেমের মধ্যে ডেটা অপারেশনগুলো নিরাপদ এবং সঠিকভাবে সম্পন্ন হয়। এখানে কিছু মৌলিক ধারণা দেওয়া হলো:
Hazelcast-এ ট্রানজেকশন ব্যবহারের জন্য প্রথমে TransactionContext তৈরি করতে হয়, এবং তারপর ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারে ট্রানজেকশন অপারেশন পরিচালনা করা হয়। নিচে একটি উদাহরণ দেয়া হলো যেখানে IMap ডেটা স্ট্রাকচারে ট্রানজেকশন পরিচালনা করা হয়েছে।
Hazelcast-এ ট্রানজেকশন ব্যবহারের জন্য আপনাকে TransactionManager কনফিগার করতে হবে। এটি আপনার সিস্টেমে ট্রানজেকশন পরিচালনার জন্য একটি সেন্ট্রাল ম্যানেজার হিসেবে কাজ করবে।
Config config = new Config();
TransactionConfig transactionConfig = new TransactionConfig();
transactionConfig.setTransactionTimeToLive(5000); // Timeout for transaction
config.setTransactionConfig(transactionConfig);
HazelcastInstance hz = Hazelcast.newHazelcastInstance(config);
এখানে, transactionTimeToLive
সেট করার মাধ্যমে আপনি ট্রানজেকশনের জন্য একটি সময়সীমা নির্ধারণ করতে পারেন। যদি এই সময়সীমার মধ্যে ট্রানজেকশন সম্পন্ন না হয়, তবে তা স্বয়ংক্রিয়ভাবে বাতিল হয়ে যাবে।
Hazelcast এর TransactionContext ক্লাস ব্যবহার করে আপনি ট্রানজেকশন শুরু করতে পারেন এবং এরপর ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারগুলোতে নিরাপদে অপারেশন করতে পারবেন।
TransactionContext context = hz.getTransaction();
context.beginTransaction(); // Start a transaction
IMap<String, String> map = hz.getMap("myMap");
// Performing transaction operations
map.put("key1", "value1");
map.put("key2", "value2");
context.commitTransaction(); // Commit the transaction
এখানে:
beginTransaction
ট্রানজেকশন শুরু করে।put
অপারেশন।commitTransaction
ট্রানজেকশন সফল হলে এটি কার্যকর করে, অর্থাৎ ডেটা সেভ হয়ে যাবে।যদি ট্রানজেকশনের কোনো অংশে সমস্যা হয়, তবে আপনি পুরো ট্রানজেকশনটি রোলব্যাক করতে পারেন।
try {
context.beginTransaction();
IMap<String, String> map = hz.getMap("myMap");
map.put("key1", "value1");
map.put("key2", "value2");
// Simulate some failure
if (someConditionFails()) {
throw new RuntimeException("Transaction failed");
}
context.commitTransaction(); // Commit if everything is successful
} catch (Exception e) {
context.rollbackTransaction(); // Rollback if any exception occurs
System.out.println("Transaction rolled back due to: " + e.getMessage());
}
এখানে, যদি কোনো সমস্যা ঘটে (যেমন someConditionFails
ফাংশন), তাহলে rollbackTransaction কল করা হবে, যার মাধ্যমে সমস্ত ডেটা পরিবর্তন বাতিল হয়ে যাবে।
Hazelcast Transaction Management API ডিস্ট্রিবিউটেড সিস্টেমে ACID প্রিন্সিপল অনুসরণ করে ডেটার নিরাপত্তা এবং সঠিকতা নিশ্চিত করতে ব্যবহৃত হয়। এটি আপনাকে distributed transactions পরিচালনা করতে এবং একাধিক ডেটা স্ট্রাকচারে অ্যাটমিক অপারেশন সম্পন্ন করতে সহায়তা করে। ট্রানজেকশন কনফিগারেশন, commit, rollback অপারেশনগুলি এবং exception handling এর মাধ্যমে আপনি সিস্টেমের মধ্যে ডেটার সঠিকতা এবং একনিষ্ঠতা বজায় রাখতে পারবেন।
Two-Phase Commit (2PC) একটি বিতরণকৃত লেনদেনের প্রোটোকল যা একাধিক সিস্টেমে বা সাইটে ডেটা সংরক্ষণ নিশ্চিত করার জন্য ব্যবহৃত হয়। এটি ACID (Atomicity, Consistency, Isolation, Durability) গুণাবলী বজায় রেখে বিভিন্ন অংশীদারের মধ্যে বণ্টিত লেনদেনের সমন্বয় নিশ্চিত করে। 2PC প্রোটোকল মূলত ডিস্ট্রিবিউটেড ট্রানজেকশন ম্যানেজমেন্ট এর জন্য ব্যবহৃত হয় যেখানে একাধিক সিস্টেম বা নোডের মধ্যে একটি লেনদেনের প্রতিটি অংশ কমপ্লিট বা রোলব্যাক হয়।
Two-Phase Commit প্রোটোকল দুটি প্রধান ধাপে বিভক্ত:
ধরা যাক, আপনি একটি ডিস্ট্রিবিউটেড সিস্টেমে লেনদেন পরিচালনা করতে চান যেখানে দুটি সার্ভার ডেটা আপডেট করবে। 2PC প্রোটোকল ব্যবহৃত হলে:
Server1
এবং Server2
কে একটি prepare বার্তা পাঠায়: "আপনি কি লেনদেনটি গ্রহণ করতে প্রস্তুত?"Server1
এবং Server2
প্রতিটি তাদের স্থিতি জানায়। যদি উভয় সার্ভার "Yes" বলে, তাহলে লেনদেনটি প্রক্রিয়া করা যাবে।Hazelcast-এ 2PC প্রোটোকল ব্যবহার করতে হলে, আপনি ডিস্ট্রিবিউটেড IMap বা ITransactionalMap ব্যবহার করতে পারেন, যা ডিস্ট্রিবিউটেড ট্রানজেকশন এবং একাধিক নোডে ডেটার অ্যাটমিক আপডেট নিশ্চিত করে।
Hazelcast-এ 2PC এর জন্য IMap বা ITransactionalMap এর commit() এবং rollback() মেথডগুলি ব্যবহৃত হয়। এর মাধ্যমে ডিস্ট্রিবিউটেড লেনদেনের সমস্ত অংশ একযোগে কমপ্লিট বা রোলব্যাক করা যায়।
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.map.IMap;
import com.hazelcast.map.ITransactionalMap;
import com.hazelcast.transaction.Transaction;
import com.hazelcast.transaction.TransactionContext;
public class TwoPhaseCommitExample {
public static void main(String[] args) {
// Hazelcast ইনস্ট্যান্স তৈরি
HazelcastInstance hz = Hazelcast.newHazelcastInstance();
// ট্রানজেকশন কন্টেক্সট তৈরি
TransactionContext context = hz.getTransactionContext();
context.beginTransaction();
try {
// ট্রানজেকশন ম্যাপ
ITransactionalMap<String, String> map = context.getMap("myMap");
// ডেটা আপডেট করা
map.put("key1", "value1");
map.put("key2", "value2");
// লেনদেন কমপ্লিট করা
context.commitTransaction();
System.out.println("Transaction committed successfully.");
} catch (Exception e) {
// কোনো ত্রুটি ঘটলে রোলব্যাক
context.rollbackTransaction();
System.out.println("Transaction rolled back due to error.");
}
}
}
এখানে, ITransactionalMap ব্যবহৃত হচ্ছে, যা 2PC প্রোটোকল অনুসরণ করে এবং commitTransaction() অথবা rollbackTransaction() মেথডের মাধ্যমে লেনদেন সম্পন্ন বা বাতিল করা হয়।
Two-Phase Commit (2PC) প্রোটোকল একটি শক্তিশালী ডিস্ট্রিবিউটেড ট্রানজেকশন ম্যানেজমেন্ট কৌশল, যা ACID বৈশিষ্ট্য বজায় রেখে একাধিক নোডে লেনদেন পরিচালনা করতে ব্যবহৃত হয়। Hazelcast-এ 2PC ব্যবহার করে আপনি ITransactionalMap বা IMap এর মাধ্যমে সিস্টেমের সকল অংশে ডেটা অটোমেটিকভাবে আপডেট বা রোলব্যাক করতে পারেন। তবে, এটি সিস্টেমের পারফরম্যান্স এবং ফেইলওভার সাপোর্টের উপর নির্ভরশীল, তাই এটি ব্যবহারের সময় যথাযথ কনফিগারেশন এবং টিউনিং গুরুত্বপূর্ণ।
Transactional Data Structures হল ডেটা স্ট্রাকচার যা ACID (Atomicity, Consistency, Isolation, Durability) বৈশিষ্ট্য অনুসরণ করে, অর্থাৎ সেগুলির ওপর করা অপারেশনগুলি সবসময় অ্যাটমিক, ধারাবাহিক, আলাদা এবং স্থিতিশীল থাকে। Hazelcast-এ ট্রানজেকশনাল ডেটা স্ট্রাকচারগুলি ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচার যেমন IMap
, IQueue
, ISet
ইত্যাদির মধ্যে ট্রানজেকশনাল অপারেশন সম্পাদনের জন্য ব্যবহার করা হয়। এর মাধ্যমে আপনি বিভিন্ন ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচার এর উপর নিরাপদ এবং অ্যাটমিক অপারেশন করতে পারেন যা একাধিক নোডে বিভক্ত থাকে।
Hazelcast-এ Transactional Data Structures মূলত transactions পরিচালনা এবং ডেটার consistency বজায় রাখার জন্য ব্যবহৃত হয়।
Hazelcast-এ ট্রানজেকশনাল ডেটা স্ট্রাকচারগুলি সাধারণ IMap, IList, ISet, IQueue ইত্যাদি ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারগুলোর সাথে কাজ করতে পারে। এই স্ট্রাকচারগুলির মাধ্যমে আপনি ডিস্ট্রিবিউটেড অ্যাপ্লিকেশনের বিভিন্ন ACID বৈশিষ্ট্য বজায় রেখে কার্যকরী ট্রানজেকশন করতে পারেন।
একটি ট্রানজেকশন সম্পূর্ণরূপে সফল হতে পারে অথবা পুরোপুরি ব্যর্থ হতে পারে, কোনো অংশের পরিবর্তন বা খারাপ ফলাফল ঘটবে না। উদাহরণস্বরূপ, যদি দুটি অপারেশন একে অপরের উপর নির্ভরশীল হয় এবং একটি অপারেশন ব্যর্থ হয়, তবে অপর অপারেশনটি বাতিল করা হবে।
ট্রানজেকশন শুরু হওয়ার আগে ডেটাবেস একটি বৈধ অবস্থায় ছিল, এবং ট্রানজেকশন শেষে ডেটাবেস একটি নতুন বৈধ অবস্থায় থাকবে।
প্রতিটি ট্রানজেকশন অন্য ট্রানজেকশন থেকে বিচ্ছিন্ন থাকবে। একাধিক ট্রানজেকশন যদি একসাথে চলতে থাকে, তবে সেগুলি একে অপরের উপর প্রভাব ফেলবে না।
যদি কোনো ট্রানজেকশন সফলভাবে সম্পন্ন হয়, তবে তার সমস্ত পরিবর্তন স্থায়ী হবে, অর্থাৎ, সেগুলি ব্যাকআপ বা রিস্টার্টের পরেও টিকে থাকবে।
Hazelcast-এ ট্রানজেকশনাল ডেটা স্ট্রাকচার ব্যবহার করতে, আপনাকে TransactionalContext এবং TransactionalMap বা অন্য ট্রানজেকশনাল ডেটা স্ট্রাকচার ব্যবহার করতে হবে। এর মাধ্যমে আপনি একটি ডিস্ট্রিবিউটেড ট্রানজেকশন তৈরি করতে পারবেন।
Hazelcast-এ ট্রানজেকশনাল ডেটা স্ট্রাকচার ব্যবহার করার জন্য প্রথমে TransactionContext তৈরি করতে হবে। তারপর TransactionalMap ব্যবহার করা যাবে।
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.Transaction;
import com.hazelcast.core.TransactionContext;
import com.hazelcast.core.IMap;
public class TransactionalExample {
public static void main(String[] args) {
HazelcastInstance hz = Hazelcast.newHazelcastInstance();
// Start a new transaction
TransactionContext context = hz.getTransactionContext();
Transaction tx = context.beginTransaction();
try {
// Access a transactional map
IMap<String, String> map = context.getMap("transactionalMap");
// Perform operations within the transaction
map.put("key1", "value1");
map.put("key2", "value2");
// Commit the transaction
tx.commit();
} catch (Exception e) {
// Rollback in case of error
tx.rollback();
System.out.println("Transaction rolled back due to: " + e.getMessage());
}
}
}
এখানে:
Hazelcast-এ Transactional Data Structures বিভিন্ন ধরনের ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারে ব্যবহৃত হতে পারে। সেগুলি হল:
Hazelcast Transactional Data Structures হল Hazelcast-এর একটি শক্তিশালী বৈশিষ্ট্য যা ডিস্ট্রিবিউটেড অ্যাপ্লিকেশনগুলিতে ACID অপারেশন করার জন্য ব্যবহৃত হয়। IMap, ISet, IQueue সহ বিভিন্ন ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারে ট্রানজেকশনাল অপারেশন প্রয়োগ করা যায়। এর মাধ্যমে আপনি ক্লাস্টারের মধ্যে অ্যাটমিক, ধারাবাহিক, বিচ্ছিন্ন এবং স্থিতিশীল অপারেশন সম্পাদন করতে পারেন, যা একটি ডিস্ট্রিবিউটেড সিস্টেমে ডেটার নিরাপত্তা এবং অখণ্ডতা বজায় রাখতে সহায়ক।
ACID (Atomicity, Consistency, Isolation, Durability) হলো একটি গুণগত মান যা ডেটাবেস ট্রানজেকশনের নিরাপত্তা এবং নির্ভরযোগ্যতা নিশ্চিত করতে ব্যবহৃত হয়। এটি মূলত একটি ডিস্ট্রিবিউটেড সিস্টেমের ডেটা ট্রানজেকশনগুলির যথাযথ কার্যকরিতা এবং সার্বিক সিস্টেম পারফরম্যান্স নিশ্চিত করার জন্য অত্যন্ত গুরুত্বপূর্ণ।
Hazelcast ক্লাস্টারের মধ্যে ট্রানজেকশনের জন্য ACID মান বজায় রাখার উদ্দেশ্যে বিভিন্ন প্রক্রিয়া ও কৌশল প্রদান করে, তবে ডিস্ট্রিবিউটেড সিস্টেমে ACID কমপ্লায়েন্স নিশ্চিত করা কিছুটা চ্যালেঞ্জিং হতে পারে, কারণ একাধিক নোডের মধ্যে ডেটার সমন্বয় করতে হয়। এই টিউটোরিয়ালে Hazelcast এর মধ্যে ট্রানজেকশন পারফরম্যান্স এবং ACID compliance নিশ্চিত করার বিভিন্ন কৌশল এবং পদ্ধতি নিয়ে আলোচনা করা হবে।
Hazelcast ক্লাস্টারিং এবং ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারের মধ্যে ট্রানজেকশন পরিচালনার জন্য ACID প্রয়োজনীয়তা মেনে চলে। Hazelcast-এর মধ্যে ট্রানজেকশন পরিচালনা করার জন্য Transactional API ব্যবহার করা হয়, যা IMap, IList, IQueue ইত্যাদির উপর ভিত্তি করে কাজ করে।
Hazelcast-এ ট্রানজেকশন পরিচালনার জন্য Transactional API ব্যবহার করা হয়। এটি একটি ক্লাস্টার বা একাধিক ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারের মধ্যে ACID ট্রানজেকশনের গুণমান বজায় রাখে। এই API-টি দিয়ে আপনি নিম্নলিখিত কাজগুলি করতে পারেন:
ট্রানজেকশন শুরু করা: Hazelcast এ IMap বা অন্য ডেটা স্ট্রাকচার ব্যবহার করার সময় একটি ট্রানজেকশন শুরু করতে পারেন।
HazelcastInstance hz = Hazelcast.newHazelcastInstance();
TransactionContext context = hz.getTransaction();
context.beginTransaction();
IMap<String, String> map = hz.getMap("myMap");
ডেটা ট্রানজেকশন: টানজেকশনের মাধ্যমে ডেটা পরিবর্তন করতে হয় এবং একাধিক ডেটা স্ট্রাকচারের উপর একসাথে কাজ করা সম্ভব।
map.put("key1", "value1");
ট্রানজেকশন কমিট বা রোলব্যাক: একবার আপনি ডেটা পরিবর্তন করলে, আপনি commit করতে পারেন, অথবা কোনো সমস্যা হলে rollback করতে পারেন।
context.commitTransaction(); // কমিট করা
context.rollbackTransaction(); // রোলব্যাক করা
HazelcastInstance hz = Hazelcast.newHazelcastInstance();
TransactionContext context = hz.getTransaction();
context.beginTransaction();
try {
IMap<String, String> map = hz.getMap("myMap");
map.put("key1", "value1");
map.put("key2", "value2");
context.commitTransaction(); // কমিট করা
} catch (Exception e) {
context.rollbackTransaction(); // ত্রুটি হলে রোলব্যাক
}
এখানে, যদি কোনো কারণে একাধিক map.put() অপারেশন সম্পন্ন না হয়, তাহলে পুরো ট্রানজেকশন rollback হবে।
Hazelcast-এ ট্রানজেকশন পারফরম্যান্স উন্নত করার জন্য কিছু কৌশল অবলম্বন করা যেতে পারে:
Batch Operations: একাধিক অপারেশনকে একসাথে ব্যাচে কমিট করা, যা পারফরম্যান্স বৃদ্ধি করতে সাহায্য করে।
IMap<String, String> map = hz.getMap("myMap");
map.put("key1", "value1");
map.put("key2", "value2");
context.commitTransaction();
Hazelcast-এ ACID compliance নিশ্চিত করতে Transactional API ব্যবহার করা হয়, যা Atomicity, Consistency, Isolation, এবং Durability সব শর্তই পূরণ করে। সঠিকভাবে ACID ট্রানজেকশন কনফিগার করলে Hazelcast-এ পারফরম্যান্স উন্নত হয় এবং ডিস্ট্রিবিউটেড সিস্টেমে ডেটার নিরাপত্তা নিশ্চিত করা যায়। Transaction Performance Tuning এর মাধ্যমে আপনি Hazelcast ক্লাস্টারে ট্রানজেকশন পারফরম্যান্স আরও উন্নত করতে পারবেন।
common.read_more